Computer networks have enhanced our ability to communicate and access information by allowing one computer or device to communicate over a network with another computing system using electronic messages. When transferring an electronic message between computing systems, the electronic message will often pass through a protocol stack that performs operations on the data within the electronic message (e.g., parsing, routing, flow control, etc.). The Open System Interconnect (OSI) model is an example of a network framework for implementing a protocol stack.
The OSI model breaks down the operations for transferring an electronic message into seven distinct layers, each designated to perform certain operations in the data transfer process. While protocol stacks can potentially implement each of the layers, many protocol stacks implement only selective layers for use in transferring data across a network. When data is transmitted from a computing system, it originates at the application layer and is passed down to intermediate lower layers and then onto a network. When data is received from a network it enters the physical layer and is passed up to the higher intermediate layers and then is eventually received at that application layer. The application layer—the upper most layer—is responsible for supporting application and end-user processing. Further, within the application layer there may reside several other layers (e.g., the Simple Open Access Protocol (SOAP) layer). Another layer incorporated by most protocol stacks is the transport layer. An example of a transport layer is the Transmission Control Protocol (TCP).
A system that relies heavily on such communication or stack protocol is known as Web services. Web services have been a driving force in advancing communications between computing systems and are turning the way we build and use software inside-out. More specifically, web services let applications share data and—more powerfully—invoke capabilities from other applications without regard to how these applications where built; what operating systems or platform they run on; and what devices are used to access them. Web services are invoked over the Internet by means of industry-standard protocols including SOAP, XML (eXtensible Markup Language), UDDI (Universal Description, Discovery and Integration), WSDL (Web Service Description Language), etc. Although web services remain independent of each other, they can loosely link themselves into a collaborating group that performs a particular task.
Current web service technologies offer direct SOAP-message communication between an initiator (e.g., a client) and an acceptor (e.g., a service). SOAP is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. It uses XML technologies to define an extensible messaging framework providing a message contract that can be exchanged over a variety of underlying protocols. SOAP provides a way to communicate between applications running on different operating systems, with different technologies and programming languages. Accordingly, SOAP is platform and language agnostic, yet simple and extensible.
The current SOAP specification defines a message construct in an open-ended manner. More specifically, SOAP defines a message to be an XML infoset with a set of optional message headers followed by a message body. The current specification, however, does not place any requirements on how to map objects (in the sense of object-oriented programming) to SOAP messages or back again. Further, it does not place any requirements on how to map the SOAP infoset to raw octets (for message transmission). In addition, it does not place any maximum size on a SOAP message. Accordingly, in order to implement SOAP and integrate it into an object-oriented programming model, these are all problems one must solve.